File systems typically associate metadata with stored items (such as documents). The metadata may describe the salient characteristics of an item, such as its size, its name, its creation date, and so forth. A search module can later retrieve one or more items based on the stored metadata. For example, a user can retrieve all word processing documents that were stored within the last month by specifying appropriate time span information as a search parameter.
In a similar manner, a social network service may allow users to create profiles. A profile is like metadata in that it describes the characteristics of a person, such as the person's age, gender, occupation, and so forth. A search module can allow a user to retrieve a list of individuals who have certain characteristics by entering appropriate profile information as a search parameter.
While the above approach to storing and retrieving information is widely used, it is sometimes not fully effective. For example, consider the illustrative scenario in which a user is attempting to retrieve a document that was forwarded to her in an Email message. Assume that the user has a vague idea that the document was received in the last year and that it pertains to a vacation offer sent by a travel agency. The user may also have a vague idea that she clicked on a link in the document and stored the document on local drive of her computer. Using conventional techniques, the user may attempt to locate the desired document by identifying documents stored in the last year that have certain telltale keywords in their file names (or bodies). But the user may have a relatively faulty recollection of the content of the desired document itself; as such, using this search technique, it may take the user a significant amount of time to locate the desired item.